<?php
/**
 * 数据更新用类
 * gcDbUpdate
 * @author    Soochow University
 * @version   1.0
 * @exclude   作  成  日：2011/04/07
 */
class gcDbUpdate{
    /**
     * table
     */
    private $table;
    /**
     * $gcDb
     */
    private $gcDb;

    /**
     * __construct
     * @param   string  $table
     */
    public function __construct($table){
        $this->table=$table;
        $this->gcDb=new gcDb();
    }

    /**
     * 数据登录
     * Insert
     * @param   string  $obj
     * @param   string  $parameter
     */
    public function Insert($obj,$parameter=null){
        if(is_array($obj)){
            //只传入数组场合，调用ZEND insert
            $this->gcDb->openDb();
            $result=$this->gcDb->db->insert($this->table, $obj);
            $this->gcDb->db->closeConnection();
            return $result;
        }else{
            $this->query($obj,$parameter);
            $result=$this->gcDb->db->lastInsertId();
            $this->gcDb->db->closeConnection();
            return $result;
        }
    }

    /**
     * 批量登录
     * batchInsert
     * @param   string  $sql
     * @param   string  $arrParameter
     * @return  array
     */
    public function batchInsert($sql,$arrParameter){
        $index = 0;
        try{
            $this->gcDb->openDb();
            $this->gcDb->db->beginTransaction();
            foreach ($arrParameter as $parameter ){
                $this->gcDb->db->query($sql,$parameter);
                $index++;
            }
            $this->gcDb->db->commit();
        }catch (Exception $e){
            $this->gcDb->db->rollBack();
            throw $e;
        }

        return $index;
    }

    /**
     * 数据更新
     * Update
     * @param   string  $obj
     * @param   string  $parameter
     * @param   string  $where
     * @return  array
     */
    public function Update($obj,$parameter,$where=null){
        if(is_array($obj)){
            $this->gcDb->openDb();
            $where=$this->gcDb->db->quoteInto($where, $parameter);
            $result=$this->gcDb->db->update($this->table, $obj,$where);
            $this->gcDb->db->closeConnection();
            return $result;
        }else {
            $result=$this->query($obj,$parameter);
            $this->gcDb->db->closeConnection();
            return $result->rowCount();
        }
    }

    /**
     * 数据消除
     * Delete
     * @param   string  $obj
     * @param   string  $parameter
     * @param   string  $where
     * @return  array
     */
    public function Delete($obj,$parameter,$where=null){
        if(empty($parameter)){
            $parameter=array();
        }
        if($where != null){
            $this->gcDb->openDb();
            $where=$this->gcDb->db->quoteInto($where, $parameter);
            $result=$this->gcDb->db->delete($this->table, $where);
            $this->gcDb->db->closeConnection();
            return $result;
        }else{
            $result=$this->query($obj,$parameter);
            $this->gcDb->db->closeConnection();
            return $result->rowCount();
        }
    }

    /**
     * SQL语句执行
     * query
     * @param   string  $sql
     * @param   string  $parameter
     * @return  array
     */
    private function query($sql, $parameter){
        $this->gcDb->openDb();
        $result = $this->gcDb->db->query($sql,$parameter);
        return $result;
    }
}

